又稱作為 LFI 〈Local File Inclusion〉,使用者能控制包含的文件參數,並利用 ../ 目錄遍歷,是一個惡名昭彰的漏洞。
Ex:test.com/test.php?test=header.php ,將 header.php 改成 ../../etc/passwd%00 就能將 /etc/passwd 顯示在頁面回應上, %00 的用處是截斷字串檢查。另外,若能上傳自定義的 PHP 檔,則利用 LFI 會有更大的危害。
而在一般的環境中,\0 字元是不會被用到的,因此可以禁止,但這並不是萬能的解決方案,利用 OS 本身對於檔案名稱長度的限制,同樣可以達到相同的效果,例如重複利用 ./ 擴充檔名。
而檢查檔案名稱也不是可靠的方法,攻擊者可嘗試利用不同的編碼以繞過 server 端的檢查。 因此,當 PHP 使用 open_basedir 將會給服務器很好的防護,使得這類型的攻擊無效。
另外,在 include 或是 fopen 等會對 file 進行操作的函式中,利用條件限制也能有效地防止這類型的攻擊發生, ex: switch 、 if else ...